#include<bits/stdc++.h>
#define int long long
using namespace std;
namespace IO
{
	template<typename T>
	void read(T &_x){_x=0;int _f=1;char ch=getchar();while(!isdigit(ch)) _f=(ch=='-'?-1:_f),ch=getchar();while(isdigit(ch)) _x=_x*10+(ch^48),ch=getchar();_x*=_f;}
	template<typename T,typename... Args>
	void read(T &_x,Args&...others){Read(_x);Read(others...);}
	const int BUF=20000000;char buf[BUF],top,stk[32];int plen;
	#define pc(x) buf[plen++]=x
	#define flush(); fwrite(buf,1,plen,stdout),plen=0;
	template<typename T>inline void print(T x){if(!x){pc(48);return;}if(x<0) x=-x,pc('-');for(;x;x/=10) stk[++top]=48+x%10;while(top) pc(stk[top--]);}
}
using namespace IO;
int m,q,k,l,r,x;
string s,s2;
signed main()
{
	freopen("copy.in","r",stdin);
	freopen("copy.out","w",stdout);
	read(k),read(m); cin>>s; s = ' '+s; read(q);
	while(q--)
	{
		read(l),read(r),read(x); s2 = " ";
		for(int i = 1;i <= x;i++)
		{
			if(s2.size()>m) break;
			s2 += s[i];
		} 	
		for(int i = l+1;i <= r;i++) 
		{
			if(s2.size()>m) break;
			s2 += s[i];
		}	
		for(int i = x+1;i <= s.size()-1;i++) 
		{
			if(s2.size()>m) break;
			s2 += s[i];
		}
		s = s2;
	}
	for(int i = 1;i <= k;i++) pc(s[i]);
	flush();
	return 0;
}



